<?php
/**
 * Representa a Funcao Geral (Cargo) do usuario na empresa e no sistema
 */
class Funcao implements IObject {

    public $tMysqli;
    private $IDFuncao;
    private $StNome;
    private $tPerfil;
    private $ArUsuario;

    public function __construct($IDFuncao, $StNome, &$tMysqli = null) {
        $this->IDFuncao = $IDFuncao;
        $this->StNome = $StNome;
        $this->tMysqli = $tMysqli;
    }

    /**
     * @method  countProfiles
     *
     * Conta o numero de Perfies que esta Funcao possui
     *
     * @since   Fevereiro de 2012
     * @return  Integer
     */
    public function countProfiles() {
        return count($this->tPerfil);
    }
    /**
     * @method  countEmployees
     *
     * Conta o numero de empregados que o perfil possui
     *
     * @since   Fevereiro de 2012
     * @return  Integer
     */
    public function countEmployees() {
        return count($this->ArUsuario);
    }

    public function countContractorsEmployees() {
        if( empty($this->ArUsuario) ) {
            return 0;
        }
        $contractors = 0;
        foreach( $this->ArUsuario as $Usuario ) {
            if( $Usuario->isContractor() ) {
                $contractors++;
            }
        }
        return $contractors;
    }

    public function hasEmployees() {
        return $this->countEmployees() > 0;
    }

    public function hasProfiles() {
        return $this->countProfiles() > 0;
    }

    public function equals(IObject $Funcao) {
        return ($this->IDFuncao == $Funcao->getIDFuncao());
    }

    public function getIDFuncao() {
        return $this->IDFuncao;
    }

    public function setIDFuncao($IDFuncao) {
        $this->IDFuncao = $IDFuncao;
    }

    public function getStNome() {
        return $this->StNome;
    }

    public function setStNome($StNome) {
        $this->StNome = $StNome;
    }

    public function getTPerfil() {
        return $this->tPerfil;
    }

    public function setTPerfil($tPerfil) {
        $this->tPerfil = $tPerfil;
    }

    public function getArUsuario() {
        return $this->ArUsuario;
    }

    public function setArUsuario($ArUsuario) {
        $this->ArUsuario = $ArUsuario;
    }



}

?>
